package heap;

import java.util.PriorityQueue;
import java.util.Queue;

/**
 * 215.数组中第K个最大元素
 * 给定整数数组 nums 和整数 k，请返回数组中第 k 个最大的元素。
 * 请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。
 * 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。
 */
public class findKthLargest {
    /**
     * hot100一刷
     */
    public static int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> o2 - o1);
        int res = 0;
        for (int num : nums) {
            pq.offer(num);
            if (pq.size() > nums.length - k + 1) {
                pq.poll();
            }
        }
        return pq.peek();
    }



}
